Managing resource usage for task performance

ABSTRACT

The use of resources on a computing device can be optimized for current conditions to reduce or minimize the amount of resources needed to provide a sufficient level of performance for various types of tasks. In some embodiments, one or more optimization algorithms can analyze information such as a type of task to be performed and the state of one or more environmental conditions to attempt to select a number and configuration of components, such as cameras and illumination elements, to use in performing the tasks. The performance of the tasks can be monitored, and the selection or states updated in order to maintain a sufficient level of performance without using more resources than are necessary.

BACKGROUND

People are increasingly interacting with computers and other electronicdevices in new and interesting ways. One such interaction approachinvolves making a detectable motion with respect to a device. Whilecomplex motion analysis devices are able to determine the motion withrelative accuracy, such analysis is difficult to implement on consumerdevices, particularly mobile or portable computing devices thatgenerally have limited battery life and processing capability. Similarproblems arise with other interactions and processes that can be veryresource intensive, which can prevent or severely limit their usage onvarious devices. Further, changes in environmental conditions can affectthe performance of a device, such that a device typically has to utilizemore resources than necessary in order to be able to handle the widevariety of environmental conditions, even though at most times thedevice is using more resources than necessary for current conditions.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments in accordance with the present disclosure will bedescribed with reference to the drawings, in which:

FIG. 1 illustrates an example environment in which various aspects canbe implemented in accordance with various embodiments;

FIGS. 2( a) and 2(b) illustrate example device configurations that canbe utilized in accordance with various embodiments;

FIGS. 3( a), (b), (c), (d), (e), and (f) illustrate example approachesto selecting components for use in performing a task that can be used inaccordance with various embodiments;

FIGS. 4( a), (b), and (c) illustrate example images for analysis withdifferent types of illumination in accordance with various embodiments;

FIG. 5 illustrates an example process for determining components to usefor performing a task that can be performed in accordance with variousembodiments;

FIG. 6 illustrates an example process for updating a selection ofcomponents used for a task that can be performed in accordance withvarious embodiments;

FIG. 7 illustrates an example computing device that can be used inaccordance with various embodiments;

FIG. 8 illustrates an example configuration of components of a computingdevice such as that illustrated in FIG. 6; and

FIG. 9 illustrates an example environment in which various embodimentscan be implemented.

DETAILED DESCRIPTION

Systems and methods in accordance with various embodiments of thepresent disclosure may overcome one or more of the aforementioned andother deficiencies experienced in conventional approaches to managingresources for an electronic device. In particular, various embodimentsutilize one or more control and/or optimization algorithms to attempt todetermine a number and selection of resources needed to perform any ofnumber of different types of tasks under current conditions. Forexample, a computing device might have multiple cameras with at leastpartially overlapping fields of view. In some embodiments, each of thesecameras might also have an associated illumination element, which canproject white light, infrared radiation, or the like. If the device isattempting to perform a task such as to identify a user using facialrecognition, determine a gaze direction or head location of a user, orprovide for gesture recognition, for example, the device might utilizeone or more control algorithms to attempt to determine information suchas whether illumination is needed, whether the device needs tocompensate for motion, what type and/or how much illumination is needed,how many cameras are needed, what resolution level is needed, and othersuch information. In some embodiments, the algorithms can determinevarious combinations of components and resources to attempt to select acombination that provides for the lowest amount of consumption of atleast one type of resource, such as the lowest power usage, lowestprocessing requirements, etc. In other embodiments, one or morealgorithms can attempt to select resources for a task in order tooptimize the usage and or selection of resources to perform one or moretasks under current conditions.

Various other applications, processes and uses are presented below withrespect to the various embodiments.

FIG. 1 illustrates an example situation 100 wherein a user 102 wouldlike to provide gesture- and/or motion-based input to a computing device104, such as to wake up the device, flip to the next page in anelectronic book (“e-book”), select an option of a graphical userinterface (GUI), or perform another such action. Although a portablecomputing device (e.g., a smart phone, an e-book reader, or tabletcomputer) is shown, it should be understood that various other types ofelectronic device that are capable of determining and processing inputcan be used in accordance with various embodiments discussed herein.These devices can include, for example, notebook computers, personaldata assistants, cellular phones, video gaming consoles or controllers,and portable media players, among others. In this example, the computingdevice 104 has at least one camera 106 (e.g., a digital still camera,video camera, optical sensor, or other such image capture element)operable to perform image capture over an associated capture range 108.Each image capture element may be, for example, a charge-coupled device(CCD) or complimentary metal-oxide semiconductor (CMOS) sensor, forexample, or can utilize another appropriate image capturing technology.

In this example, the user 102 is performing a selected motion or gestureusing the user's fingertip 110. The motion can be one of a set ofmotions or gestures recognized by the device to correspond to aparticular input or action, or can be a specific motion or gestureassociated with that particular user. If the motion is performed withinthe angular capture range 108 (i.e., field of view) of at least one ofthe cameras 106 on the device, the device can capture image informationincluding at least a portion of the motion or gesture, analyze the imageinformation using at least one image or video analysis algorithm, anddetermine movement of at least one feature of the user betweensubsequent frames or portions of the image information. Such detectionis useful for various types of gesture, such as a user waving an armback and forth to wake up a device, moving a hand up and down to providenavigational input, and the like. Various types of motion input aredescribed, for example, in co-pending U.S. patent application Ser. No.12/332,049, filed Dec. 10, 2008, and entitled “Movement Recognition asInput Mechanism,” which is hereby incorporated herein by reference.

In many instances, having a single camera on the device might beinsufficient to provide all the desired input to the device for varioustasks. For example, certain gestures might be distance-dependent suchthat a single camera might not be sufficient to provide the necessarydistance information, at least without complicated image analysisalgorithms. Using two or more cameras can provide depth information,which can enable the relative positions of objects near the device to bedetermined in three dimensions. Similarly, each camera will have aspecific field of view, such that only having one or two cameras on thedevice might limit the ability of the device to capture information inall or most directions around the device. Similarly, a single lightsource (e.g., LED) will provide illumination over a specific range ofangles, and may not provide adequate lighting in multiple directions.Various other limitations result from having a small number ofcomponents on a device as well as should be apparent.

FIG. 2( a) illustrates a first example device 200 including multiplecomponents that can be used to capture image information in accordancewith various embodiments. It should be understood that, while thecomponents of the example device are shown to be on a “front” of thedevice, there can be similar or alternative components on the sides orback of the device as well (or instead). Further, directions such as“top,” “side,” and “back” are used for purposes of explanation and arenot intended to require specific orientations unless otherwise stated.In this example device 200, there are four cameras 204, 206, 208, 210 ona same side of the device as a primary display element 202 (e.g., an LCDdisplay screen). Using such an arrangement, the device likely will haveat least one or two cameras facing the user at any time that areunobstructed by objects, such as by the user holding the device, whichcan at least partially obscure a view of at least a portion of the userto various cameras on the device. In this example, the device 200 alsoincludes an illumination element 212 operable to project illumination(e.g., white light or IR) in a direction of the user, to assist withimage capture. The device also includes a light sensor 214 for use indetermining when illumination might be needed.

FIG. 2( b) illustrates another example device 220 wherein the cameras224, 226, 228, 230 are positioned on the corners of the device. If thedevices have a sufficient wide-angle lens (e.g., a fish-eye lens), thecameras can have at least partially overlapping fields of view such thatthe cameras might be able to capture information in substantially anydirection around the device. In this example, each camera also has anassociated illumination element 234, 236, 238, 240 operable to directlight over a range of angles associated with a respective camera.Although the illumination elements are shown on the front of the devicefor convenience, it should be understood that the illumination elementscan be on the corners of the device as well, and in at least someembodiments can utilize the same wide-angle lenses to project light overa range of angles at least including the field of view of the respectivecamera. This example device can also include a display screen 222, lightsensor 232, and other such elements as discussed elsewhere herein.

As discussed, an advantage of having a large number of cameras,illumination elements, and other such components is that image data canbe captured in a number of different directions with sufficientillumination without significant concern about obstructions or othersuch occurrences. A potential downside, however, is that capturing imageinformation using a large number of cameras requires a significantamount of battery power to operate the cameras, a significant amount ofmemory to store all the image information, and a significant amount ofprocessing capacity to process the large amount of image information,particularly for relatively high resolution cameras. Similarly, usingillumination for each of these cameras can significantly drain thebattery in the device. In many instances, less than all of thesecomponents will be sufficient to perform a desired task. Approaches inaccordance with various embodiments attempt to reduce and/or optimizethe amount of resources used to perform a specific task under currentconditions.

For example, FIG. 3( a) illustrates a situation where a user isperforming a gesture using a fingertip 312 within a field of view of oneor more cameras on an example computing device 302. In this example, thegestures being performed might be relatively simple and the lightingadequate such that not all four cameras are needed to accuratelydetermine the motion of the user's fingertip relative to the device. Forvery simple gesture modes, a single camera might be adequate. In somecases, two of the cameras can be used in order to provide for stereoimage capture, which provides distance information in addition toposition information as known in the art for stereo imaging. Forexample, FIG. 3( b) illustrates a first image 320 that might be capturedof the user's fingertip using a first camera 308 of the device 302, andFIG. 3( c) illustrates a second image 330 that can be captured of theuser's fingertip at substantially the same time using a second camera310. The location of the fingertip in each image can be used todetermine a direction to the fingertip from the respective camera, usinginformation such as the field of view of the camera and the number ofpixels for that field of view. The location to the fingertip from eachcamera can be represented by a direction vector as illustrated in FIG.3( a). By knowing the relative position of each camera on the device,the direction vectors can be added or otherwise analyze using vectormanipulation to determine the position of the fingertip 312 with respectto the device 302 in three dimensional space.

In many cases, however, it will not be sufficient to simply select twocameras to use to perform gesture recognition. For example, in FIG. 3(a) the user is holding the device with the user's left hand, whichprevents the camera positioned on the lower left front of the device(not visible in the figure) from capturing images of the user'sfingertip as the view is obstructed by the user's left hand. If the userwas left handed, the user might instead hold the device in the user'sright hand in order to form gestures with the user's left hand. Thus, adifferent combination of cameras might have an unobstructed view of theuser's fingertip. In one example, an algorithm executing on the devicemight cause the cameras near the right edge of the device (from theperspective of the user) to be used to capture images for gesturerecognition. In at least some embodiments, the hand that the user isusing to make gestures can be monitored over time, such that if the userswitches the hand currently holding the device or makes another suchadjustment, the device can adjust the active cameras accordingly, suchthat the device is only using two cameras at any time to capture imageinformation, and the two currently active cameras are selected to bemost likely to be able to view a gesture performed by the user. Therecan be various types of algorithms used to attempt to select theappropriate components to be used for a particular type of task, as mayinclude various machine learning algorithms, edge histogram analysisalgorithms, optimization algorithms, and adaptive control algorithms,among others.

Other approaches can be used to select components to use to captureimage information as well. For example, FIG. 3( d) illustrates anexample where a user is again holding a computing device 310 in theuser's left hand, and performing a gesture with the user's right hand.If the user activates gesture input on a portable computing device, forexample, an algorithm executing on the device might determine that auser holding the device might be most likely to hold the device in sucha way as to obscure one of the cameras near the bottom of the device,such that the algorithm might select to use two cameras 342, 344 nearthe top of the device to capture image information. Such an approach canbe useful for tasks such as facial recognition as well, where theplacement of either of the user's hands 304, 306 might obscure a view ofthe user's face from one of the lower cameras on the device. In at leastsome embodiments, the device 310 can determine that it is being held bythe user, such as by detecting motion using a component such as anaccelerometer or electronic gyroscope or determining contact through atouch-sensitive material on the computing device. In such a situation,the device can again select the top two cameras (or another suchselection) to use to capture image information. In this situation,however, the device might also determine that an electronic gyroscope,or other such motion-determining element, should be activated on thedevice in order to enable motion of the device to be tracked and/oraccounted for in the captured image information, which can improve theaccuracy of gesture recognition or other aspects of the imageinformation. As discussed above with respect to FIG. 3( d), the images350, 360 captured by the pair of cameras as illustrated in FIGS. 3( e)and 3(f) can again be used to determine a relative position of theuser's fingertip 312 with respect to the computing device. If the devicemoves between image capture instances, however, the motion of the devicecan be interpreted as motion of the user's fingertip, which can resultin false input or gesture motion detected by the device. Further, devicemotion can increase the difficulty in subtracting out backgroundinformation or isolating the user's hand, as movements of the backgroundcan make the background more difficult to subtract or remove betweenimages. Accordingly, it can be desirable to activate a gyroscope orother such element that can be used to track changes in deviceorientation and enable that motion to be accounted for in the gesturedeterminations. As discussed above, however, elements such asaccelerometers and electronic gyroscopes consume a substantial amount ofpower, such that it can be desirable to utilize such components onlywhen necessary. In at least some embodiments, elements such as stereocameras or infrared emitters can also be used to separate out thebackground in order to enable more accurate determination of foregroundfeatures, even in situations where distance is not important such that asingle camera might otherwise be adequate for image capture. Examples ofsuch elements can be found, for example, in co-pending U.S. patentapplication Ser. No. 13/198,008, filed Aug. 4, 2011, and entitled“Overcoming Motion Effects in Gesture Recognition,” which is herebyincorporated herein by reference.

In addition to the cameras to be used in capturing image information,various illumination elements can be selected to assist with imagecapture as well, as may depend upon various environmental factors orother such information. For example, a relatively simple image captureand analysis algorithm can utilize ambient-light imaging with a singlecamera (still or video) to capture images that can be analyzed with animage recognition algorithm. As illustrated in the example image 400 ofFIG. 4( a), however, ambient light images can include information for anumber of different objects and thus can be very processor and timeintensive to analyze. For example, an image analysis algorithm would notonly have to differentiate the hand from the door and sidewalk in theimage, but would also have to identify the hand as a hand, regardless ofthe hand's orientation. Such an approach can require shape or contourmatching, for example, which can still be relatively processorintensive. A less processor intensive approach would be to separate thehand from the background before analysis.

In at least some embodiments, a light emitting diode (LED) or othersource of illumination can be triggered to produce illumination over ashort period of time in which an image capture element is going to becapturing image information. The LED can illuminate a feature relativelyclose to the device much more than other elements further away, suchthat a background portion of the image can be substantially dark (orotherwise, depending on the implementation). For example, FIG. 4( b)illustrates an example image 410 wherein an LED or other source ofillumination is activated (e.g., flashed or strobed) during a time ofimage capture of at least one camera or other such gesture sensor. Ascan be seen, the user's hand will appear relatively bright in the imagesince the hand is relatively close to the device. Accordingly, thebackground images will appear relatively, if not almost entirely, dark.This approach can be particularly beneficial for infrared (IR) imagingin at least some embodiments. Such an image can be much easier toanalyze, as the hand has been effectively separated out from thebackground, and thus can be easier to track through the various images.Further, there is a smaller portion of the image to analyze to attemptto determine relevant features for tracking.

Such an approach can work both in bright or dark conditions. A lightsensor can be used in at least some embodiments to determine whenillumination is needed due at least in part to lighting concerns. Inother embodiments, a device might look at factors such as the amount oftime needed to process images under current conditions to determine whento pulse or strobe the LED. In still other embodiments, the device mightutilize the pulsed lighting when there is at least a minimum amount ofcharge remaining on the battery, after which the LED might not fireunless directed by the user or an application, etc. In some embodiments,the amount of power needed to illuminate and capture information usingthe gesture sensor with a short detection time can be less than theamount of power needed to capture an ambient light image with a rollingshutter camera without illumination.

In embodiments where there is not a sufficiently fast shutter, wherethere is a rolling shutter effect, or in other such situations, it mightbe difficult to substantially prevent detecting reflections from otherobjects near the device. For example, FIG. 4( c) illustrates an exampleimage 420 that could be captured using an infrared (IR) sensor, forexample, wherein the hand is easier to locate in the image but thebackground is still present enough that an image processing algorithmmight have to process other objects in the image, or might not be ableto quickly locate a specific feature with a minimum level of certainty.In at least some embodiments, a device can capture both an ambient lightimage, such as in FIG. 4( a), and a reflected IR image, such as in FIG.4( b). By having both images, one or more algorithms can be used toshift the images (to account for distance offset of the imagingelements) and then subtract the ambient light image 400 from thereflected IR image 420. The resulting image would be substantiallydominated by the hand of the user. In at least some embodiments, aweighted subtraction can be performed when it is determined (due tocontrast, lighting, or other such aspects) that the backgroundinformation is likely much more intense in the ambient light image thanthe IR image, and vice versa. In some cases, a set of weightedcomparisons can be performed until one or more features can be locatedwith a minimum level of confidence. As discussed, however, such anapproach can be relatively resource and power intensive, such that itcan be desirable to limit such techniques to situations that actuallyrequire such an approach to provide adequate gesture recognition orother such results.

Systems and methods in accordance with various embodiments can attemptto provide for adequate performance of specific tasks while optimizingand/or minimizing the power consumption or resource utilization neededto perform those tasks. In particular, one or more optimization orcontrol algorithms are utilized in various embodiments to analyzeinformation, such as a type of task to be performed and/or currentenvironmental conditions, to select a minimum set of componentsnecessary to perform the desired tasks. These algorithms can also updatethe selection of components over time as conditions change, whenadequate results are not provided, or in response to any other suchoccurrence or variance. In some embodiments, a device can start with aminimum number and/or selection of components for a particular type oftask, and can add, adjust, or select different components until adequateresults are obtained. Various other approaches can be utilized as wellwithin the scope of the various embodiments.

FIG. 5 illustrates an example process 500 for optimizing resources for aselected task that can be used in accordance with various embodiments.It should be understood that, for any process discussed herein, therecan be additional, fewer, or alternative steps performed in similar oralternative orders, or in parallel, within the scope of the variousembodiments unless otherwise stated. In this example an image-relatedtask, such as a gesture recognition process, is activated 502 on acomputing device. The task can be activated manually by the user,automatically by the device in response to the opening of an applicationor performing of an action, or in response to any other such action oroccurrence. In some embodiments, a gesture recognition process might beactive any time the device is in an active (or similar) state. Asmentioned, a gesture recognition process can utilize one or moreoptimization algorithms to attempt to optimize the usage of resources onthe device to provide for sufficient gesture recognition capabilitywhile reducing power consumption or resource utilization to the extentpossible, or at least practical, on the device. An example device mighthave various components that can be used to capture and analyze imageinformation, as may include one or more cameras of the same or differenttypes, one or more illumination elements of the same or different types,an electronic gyroscope, an accelerometer, an inertial sensor, anultrasonic sensor, a distance determination element, one or more ambientlight sensors, an air pressure sensors, an electronic compass, and thelike.

In this example, the algorithms will determine 504 the type of task and,concurrently or in sequence, attempt to determine 506 a state of one ormore environmental conditions that can affect the appropriate number andtype of components to be used in performing gesture recognition. Asdiscussed, this can include an amount of ambient light, a relativeorientation of the user, an amount of motion of the device, or othersuch factors. Based at least in part upon the type of task, thealgorithms can select 508 a number of cameras to be utilized. Forexample, recognition of simple gestures such as swipes ortwo-dimensional motions might be able to utilize a single camera, asdistance information might not be as important. For more complexgestures, which might include motions in three dimensions, it might bedesirable to utilize components that are able to detect distance as wellas position, such as two cameras or a camera and a distance sensor, etc.Based at least in part upon the state of the determined environmentalfactors, the algorithms can specify 510 which of the cameras (of theselected number) are to be used in capturing image information for thetype of gesture recognition. As discussed, the cameras to be used can bespecified based upon factors such as a relative orientation of a userwith respect to the device, a current orientation of the device, thefield of view of each camera, and other such information. Based at leastin part upon the current environmental conditions, the algorithms canalso select 512 one or more additional components to be used tocapturing and/or analyzing the images. As mentioned, this can includedetermining whether any illumination elements are needed under currentconditions, and if so how many and which illumination elements on thedevice should be used. Similarly, the algorithms can determine whetherany motion determination elements should be activated, which processorsmight be needed to process the results, which processing approachesshould be used, etc.

Once the number and the selection of cameras and other components aredetermined, the device can begin to capture 514 image information whilethe selected components are activated. For example, any selectedillumination elements can be activated (e.g., flashed or strobed) asappropriate, and any motion-determining element can be activated todetermine an amount of motion between image captures. Once a sufficientamount of image information has been captured, as may depend upon thetype of task and process being used, an image analysis algorithm, orother such process or application, can analyze 516 the captured imageinformation to attempt to recognize information for the selected task.As discussed, this can include recognizing a gesture in the image,recognizing an identity of a user in the image information, recognizingan object near the device, etc. A determination can be made 518 as towhether the results of the analysis are sufficient for the type of taskbased upon available information. For example, if a gesture mode hasbeen activated but no gesture is recognized, an algorithm mightdetermine that additional resources are needed for the gesturerecognition process. In some embodiments, a detection of motion withoutrecognition of a gesture can be further indicative that the currentlyutilized components might not be sufficient. In some embodiments, ananalysis of the captured image information might be performed todetermine whether a quality of the image information meets a minimumimage quality criterion for the current task. For example, anedge-detection process might be executed against the image informationto determine an amount of blur in the images, or anintensity-determining algorithm might be utilized to determine whetherthere is adequate lighting for the objects being captured in the imageinformation. In some embodiments, there might be at least one imagequality threshold that must be met for a type of task, such as a maximumamount of blur or minimum amount of dynamic range.

If the results are determined 520 to be sufficient for the type of task,such as a gesture being recognized or a user identified, then theprocess can continue to be performed with the selected cameras andcomponents. If the results are determined not to be sufficient, thenumber of cameras and/or selection of components can be updated 522 toattempt to improve the results of the process. As discussed, this caninvolve adding another camera, changing selected cameras, activating anillumination element or changing a brightness of an illuminationelement, activating a motion-determining element, and the like. Theprocess can continue and adjustments can be made until the results forthe task are determined to be at least sufficient.

In addition, performance and changes in conditions can be monitored overtime in order to make any changes or adjustments needed to maintain asufficient level of performance while optimizing, minimizing, orreducing resource consumption for the performance. FIG. 6 illustratesone such process 600 that can be used in accordance with variousembodiments. In this example, a task can be performed 602 using theselected components from a process such as that described with respectto FIG. 5 wherein the selection of components has been optimized toprovide at least sufficient performance for the selected task. For taskssuch as gesture recognition that can occur over a period of time, theperformance of that task can be monitored 604 to determine whether theresults are still sufficient for the type of task. This can include, forexample, determining whether gestures are still being recognized. Otherindicators can be used as well, such as detecting a user repeating agesture multiple times, which can indicate (at least for certain typesof gestures) that the gesture was not recognized properly. If theresults are no longer sufficient, one or more algorithms and/orcomponents can attempt to determine 608 any changes in conditionsbetween the last time at which the results were sufficient and a time atwhich results were no longer sufficient. These changes could include,for example, a change in the amount of ambient light around the device,a change in orientation of the user or device, an amount of motion ofthe device, or other such aspects. Based at least in part upon anychanges in environmental conditions, one or more additional oralternative components can be activated 610 on the device to attempt toimprove the performance of the task by the computing device. In someembodiments, the adjustment can involve changing a state of one or morecomponents, such as by changing an active resolution of a camera oradjusting a brightness level of an LED, etc. In situations where nochanges in environmental conditions can be determined, an algorithmmight use rankings or weightings of components, performance metrics,historical behavior information, or any other such information toattempt to predict a combination of components that will be able toprovide sufficient performance without utilizing substantially moreresources than is necessary.

Even if the performance of the task is sufficient, however, one or morealgorithms executing on the computing device (or on a system or servicein communication with the computing device) can still attempt tooptimize the selection of components to reduce resource consumption. Forexample, in this process the algorithms can determine 612 whether theperformance has been sufficient for at least a minimum period of time.In many embodiments, it can be undesirable to continually optimizecomponents as the optimization process itself utilizes resources, andfrequent changes can increase the likelihood that some of the resultswill not be adequate. In some embodiments, an algorithm might wait atleast 10 seconds or 30 seconds, for example, before attempting to adjustcomponent selections or settings when the selection is performing withsufficient results. If the results have not been sufficient for theminimum period of time, the device can continue processing with thecurrent selection. If the results have been at least sufficient for atleast the minimum period of time, a results prediction algorithm orother such process or component can attempt to predict 614 whether feweror alternative components, settings, or configurations can be used tomaintain sufficient performance while reducing resource consumption. Inone embodiment, an application can attempt to determine changes inenvironmental conditions, such as a change in ambient lighting ormovement that might indicate that a component might no longer be needed.For example, if the user went from an area that was dark to an area thatis light, as may be determined by a light sensor or other suchcomponent, an optimization algorithm might be able to predict that awhite light LED no longer needs to be utilized to provide sufficientlight for image capture. Similarly, if a user has placed a device in astationary setting such that the device is no longer moving, the devicemight be able to deactivate an electronic gyroscope or other suchcomponent. Various other changes can be made as well as discussed andsuggested herein.

If no prediction is made 616 that indicates, at least with a minimumlevel of confidence, that a fewer number of components (or other suchreduction in resources) can be used to perform the task with sufficientperformance, the process can continue with the current selection andconfiguration of resources. If however, it is predicted that theresource allocation for the process can be reduced while maintainingperformance, the number, selection, and/or configuration of componentscan be adjusted 618 to attempt to perform the task while consuming fewerresources. The device can then perform the task using the adjustedsettings and monitor performance. If the performance stays at leastsufficient for that type of task, the performance can continue with thecurrent settings. If performance is not sufficient, the process caneither go back to the previous configuration or attempt to determine anew selection of components and settings that would provide sufficientperformance. Various other approaches can be used as well within thescope of the various embodiments.

Such approaches can be applied to the situation discussed above withrespect to FIGS. 3( a) to 3(f), wherein a user is attempting to providegesture input to a computing device including (at least) four cameraseach having a respective light source, such as an IR LED. Operating allthe cameras and LEDs might utilize as much as 30% of the powerconsumption of the entire system for certain devices. Accordingly, oneor more optimization algorithms can attempt to reduce the amount ofpower consumption through software by determining how many cameras,light sources, and other components are actually needed to provideadequate performance, and activate only those components for gesturerecognition. As discussed, the number, selection, and state ofcomponents can vary between tasks, as well as for performance of thesame or similar tasks under different conditions.

In one embodiment, an algorithm can determine that the type of gesturerecognition that has been activated generally requires depthinformation, or information in three-dimensional space, such that twocameras should be used to provide stereo vision. For some devices, thiscould instead involve one camera and a distance sensor where the deviceincludes a distance sensor and it is determined that the onecamera/sensor approach consumes fewer resources than a stereo cameraapproach while providing sufficient performance. As discussed, theprocess can also involve selecting which two cameras to use to captureimage information. As discussed above, an image recognition process (orother process discussed herein) can be used to attempt to determinewhich hand the user is using to make the gestures and/or hold thedevice, which can affect the selection of the cameras. Similarly, thedevice can attempt to determine whether the device is being held, inmotion, or otherwise in an orientation that dictates which camerasshould be used to capture the gesture information. For stereo imagecapture, a relative orientation and/or separation of the two camerasmight be needed to provide the desired stereo effect (or at leastprovide sufficiently overlapping fields of view). Various otherprocesses and information can be used as well.

The device can also attempt to determine whether illumination willlikely be needed, and if so how many (and which) LEDs should beactivated. If the recognition approach uses IR radiation, it can bedetermined that at least one IR LED will likely be needed to provide foradequate gesture detection. If ambient or visible light is to be used, amechanism such as a light sensor (or information from one of thecameras, etc.) can be used to determine an amount of light in thevicinity of the user or device, to determine whether (and how much)illumination will be needed. In some embodiments, a single LED with arelatively low brightness setting can be used initially, where thebrightness can be increased until a maximum value is reached and thenadditional LEDs utilized until sufficient performance is obtained. Inother embodiments the device can look at information such as the amountof ambient light, the distance and location of the user's hands or otherfeatures, historical performance data, and other such information toattempt to predict the minimum amount of illumination that should beprovided to provide sufficient performance for the current type of taskunder the current conditions. The selection of which LEDs to use can bebased at least in part upon which cameras are selected, the relativeposition and/or orientation of the user with respect to the device, andother such information.

Similarly, a determination can be made as to the amount of motion of thedevice at the current time to determine whether a motion- ororientation-determining element of the device should be activated. Forexample, a user holding an electronic device in one hand will causesmall motions of the device over time. A rotation of the device canresult in a significant shift in the locations of various objects in thecaptured image information. Based on the amount and type of motion, thedevice can decide to activate one or more elements to attempt to monitoran amount and direction of motion of the device during image capture, toattempt to remove the effects of the motion from the images.

As discussed, the operational state of various components can beselected as well using various algorithms discussed and suggestedherein. For example, some algorithms only require a small number ofpixel values in order to determine a type of gesture, such as a swipefrom left to right or up and down. For such a type of process, analgorithm might select an initial resolution of a camera (e.g., a 20×20pixel array) to use to capture the image information. As known in theart, activating more pixels consumes more energy and provides more datato be processed, so it can be desirable to limit the number of pixelsused to the extent possible. If the results are not adequate, theresolution can be increased up to the full resolution of the camera. Insome embodiments, lower resolution cameras might be selected first, withhigher resolution cameras being used only when the results are notsufficient under current conditions for the selected type of task.Similarly, if a user goes between broad gestures (such as swipes of ahand) and fine gestures (such as drawing letters with a fingertip), theresolution and/or selection of cameras might need to be adjustedaccordingly. If the environment is variable such that the lightingchanges frequently or objects are moving in the background, an algorithmmight select a higher number of cameras or higher resolution to attemptto provide a greater amount of information to attempt to use torecognize gestures, etc. As conditions settle, the number of cameras orother components can be reduced accordingly.

In some embodiments, one or more algorithms can attempt to predictfuture conditions in order to deactivate cameras or other componentsthat are not likely to be needed in the perceivable future. For example,a user might change an orientation of the device, or move with respectto the device, such that the user is no longer within a field of view ofa particular camera. In such a situation, the device might decide todeactivate that camera. If the device notices the user moving backtowards that location, the device can re-activate the camera. Similarly,if the device detects that the device has been placed on a stationarysurface, the device might deactivate a motion- ororientation-determining element (e.g., an accelerometer, electronicgyroscope, inertial sensor, or electronic compass) and any camera or LEDthat is now obscured by the surface. The device might also switch fromstereo image capture to mono image capture, where stereo imaging wasactivated due to an amount of background movement in the images due tomovement of the device. If performance is sufficient for a period oftime, the device might shut off other environmental condition sensors aswell, such as ambient light sensors, pressure sensors, microphones, andthe like.

Certain embodiments can also attempt to optimize the processors and/oralgorithms that will be used to perform a particular task. For example,if the gesture mode is looking for a wake-up motion such as a simpleleft to right motion, the algorithm might decide to use a single camerain a low-resolution mode, and utilize an on-board processor of thecamera module with a low-resolution template-matching algorithm toattempt to recognize such a gesture, instead of using a complex matchingalgorithm with a central processor of the device. If sufficientperformance is not obtained, the device can utilize more powerfulprocessors, more robust algorithms, and other such components orprocesses.

Various actions of the user can cause components to be deactivated oradjusted as well within the scope of the various embodiments. Forexample, if a user is typing on a mobile device then cameras used todetect gestures can likely be deactivated during the typing as thoseactions are typically exclusive. If the user is holding the device up tothe user's ear during a phone call, the cameras and illuminationelements might be deactivated. Similarly, if the user places the devicein a pocket or backpack, all cameras might be deactivated for a periodof time. Various other approaches can be used as well within the scopeof the various embodiments.

Other information can be considered as well in different embodiments.For example, the device can monitor a state of the battery of the devicewhen not plugged in. If the battery is in a low power state or issubject to maximum load, for example, the device might select fewercomponents, lower resolutions, less robust algorithms, or other suchconfigurations to attempt to conserve more battery power than undernormal circumstances. In some embodiments, an approach might be selectedthat is more memory or processor consuming, for example, but providesless drain on the battery by reducing the use of lighting, secondarycomponents, etc. In some embodiments, the time of day might be used as afactor to determine an amount of light that might be needed, in order tofurther reduce battery consumption.

Various types of information can also be indicators that additionalresources might be needed for the current task. For example, a devicecan utilize one or more statistical analysis approaches to determine howoften a user goes back and repeats a gesture as an indication of thesufficiency of the performance. Similarly, if the device detects motionbut no gestures for a period of time, the device might at leasttemporarily increase the resources used for the task to attempt todetermine whether gestures are being made but not recognized. In someembodiments, there might be a simple cancel motion that can easily bedetected under most conditions, which can be used to determine how oftena gesture is being correctly (or incorrectly) recognized. In someembodiments, the device can attempt to monitor a frustration level ofthe user, such as may accompany an increased heart rate, use of certainwords or language, nodding the head in a “no” motion, or various facialexpressions. Various other processes can be used to attempt to determinewhen to increase the resources dedicated to the present task.

In some embodiments, the captured video information can bepre-preprocessed to assist with gesture recognition. For example, thevideo information can be converted to a grayscale image to reduce theamount of processing capacity needed, as well as to more easilydistinguish edges in the image. Similarly, even when more than one imageis captured the images might be analyzed one at a time for certain tasksin order to reduce processing time when analysis of less than all thecaptured images will suffice.

Similarly, settings for various users and conditions can be stored asstarting points for future tasks. For example, a first configurationmight work for a first user in the car while a second configurationmight work for the first user at work. A third configuration might workfor a different user in the same car or workplace, due to variations inthe way gestures are made, features of the user, or other suchinformation. These combinations of users and settings can be stored onthe device or in a location accessible by that device. In someembodiments, the optimization algorithms can be executed at a locationremote from the device, such as a system or service operating in “thecloud.”

FIG. 7 illustrates an example computing device 700 that can be inaccordance with various embodiments. In this example, the device has atleast four conventional digital cameras 704, 706, 712, 714 on a sameside of the device as a display element 702, enabling the device tocapture image information for a user of the device during typicaloperation where the user is at least partially in front of the displayelement, and thus at least partially within the field of view of atleast some of these cameras. In addition, there is at least oneillumination element 708 (e.g., a white light or IR LED) positioned onthe same side of the device such that an object captured by one of thecameras can be at least partially illuminated by the illuminationelement(s). This example device also includes a light sensor 710 thatcan be used to determine an amount of light in a general direction of animage to be captured. The device also includes at least oneorientation-determining element 716, such as an accelerometer, inertialsensor, or electronic gyroscope, operable to determine motion of thedevice for use in adjusting the relative position of objects in imagescaptured at different times. Various other elements and combinations ofelements can be used as well within the scope of the various embodimentsas should be apparent in light of the teachings and suggestionscontained herein.

In order to provide various functionality described herein, FIG. 8illustrates an example set of basic components of a computing device800, such as the device 700 described with respect to FIG. 7. In thisexample, the device includes at least one central processor 802 forexecuting instructions that can be stored in at least one memory deviceor element 804. As would be apparent to one of ordinary skill in theart, the device can include many types of memory, data storage orcomputer-readable storage media, such as a first data storage forprogram instructions for execution by the processor 802, the same orseparate storage can be used for images or data, a removable storagememory can be available for sharing information with other devices, etc.The device typically will include some type of display element 806, suchas a touch screen, electronic ink (e-ink), organic light emitting diode(OLED) or liquid crystal display (LCD), although devices such asportable media players might convey information via other means, such asthrough audio speakers. In at least some embodiments, the display screenprovides for touch or swipe-based input using, for example, capacitiveor resistive touch technology.

As discussed, the device in many embodiments will include at least oneimage capture element 808, such as one or more cameras that are able toimage a user, people, or objects in the vicinity of the device. An imagecapture element can include, or be based at least in part upon anyappropriate technology, such as a CCD or CMOS image capture elementhaving a determined resolution, focal range, viewable area, and capturerate. The device can include at least one motion component 810, such asan accelerometer, inertial sensor, or electronic gyroscope, operable todetect changes in the position and/or orientation of the device. Thedevice also can include at least one illumination element 812, as mayinclude one or more light sources (e.g., white light LEDs, IR emitters,or flash lamps) for providing illumination and/or one or more lightsensors or detectors for detecting ambient light or intensity, etc.

The example device can include at least one additional input device ableto receive conventional input from a user. This conventional input caninclude, for example, a push button, touch pad, touch screen, wheel,joystick, keyboard, mouse, trackball, keypad or any other such device orelement whereby a user can input a command to the device. These I/Odevices could be connected by a wireless, infrared, Bluetooth, or otherlink as well in some embodiments. In some embodiments, however, such adevice might not include any buttons at all and might be controlled onlythrough a combination of visual (e.g., gesture) and audio (e.g., spoken)commands such that a user can control the device without having to be incontact with the device.

As discussed, different approaches can be implemented in variousenvironments in accordance with the described embodiments. For example,FIG. 9 illustrates an example of an environment 900 for implementingaspects in accordance with various embodiments. As will be appreciated,although a Web-based environment is used for purposes of explanation,different environments may be used, as appropriate, to implement variousembodiments. The system includes an electronic client device 902, whichcan include any appropriate device operable to send and receiverequests, messages or information over an appropriate network 904 andconvey information back to a user of the device. Examples of such clientdevices include personal computers, cell phones, handheld messagingdevices, laptop computers, set-top boxes, personal data assistants,electronic book readers and the like. The network can include anyappropriate network, including an intranet, the Internet, a cellularnetwork, a local area network or any other such network or combinationthereof. Components used for such a system can depend at least in partupon the type of network and/or environment selected. Protocols andcomponents for communicating via such a network are well known and willnot be discussed herein in detail. Communication over the network can beenabled via wired or wireless connections and combinations thereof. Inthis example, the network includes the Internet, as the environmentincludes a Web server 906 for receiving requests and serving content inresponse thereto, although for other networks, an alternative deviceserving a similar purpose could be used, as would be apparent to one ofordinary skill in the art.

The illustrative environment includes at least one application server908 and a data store 910. It should be understood that there can beseveral application servers, layers or other elements, processes orcomponents, which may be chained or otherwise configured, which caninteract to perform tasks such as obtaining data from an appropriatedata store. As used herein, the term “data store” refers to any deviceor combination of devices capable of storing, accessing and retrievingdata, which may include any combination and number of data servers,databases, data storage devices and data storage media, in any standard,distributed or clustered environment. The application server 908 caninclude any appropriate hardware and software for integrating with thedata store 910 as needed to execute aspects of one or more applicationsfor the client device and handling a majority of the data access andbusiness logic for an application. The application server providesaccess control services in cooperation with the data store and is ableto generate content such as text, graphics, audio and/or video to betransferred to the user, which may be served to the user by the Webserver 906 in the form of HTML, XML or another appropriate structuredlanguage in this example. The handling of all requests and responses, aswell as the delivery of content between the client device 902 and theapplication server 908, can be handled by the Web server 906. It shouldbe understood that the Web and application servers are not required andare merely example components, as structured code discussed herein canbe executed on any appropriate device or host machine as discussedelsewhere herein.

The data store 910 can include several separate data tables, databasesor other data storage mechanisms and media for storing data relating toa particular aspect. For example, the data store illustrated includesmechanisms for storing content (e.g., production data) 912 and userinformation 916, which can be used to serve content for the productionside. The data store is also shown to include a mechanism for storinglog or session data 914. It should be understood that there can be manyother aspects that may need to be stored in the data store, such as pageimage information and access rights information, which can be stored inany of the above listed mechanisms as appropriate or in additionalmechanisms in the data store 910. The data store 910 is operable,through logic associated therewith, to receive instructions from theapplication server 908 and obtain, update or otherwise process data inresponse thereto. In one example, a user might submit a search requestfor a certain type of item. In this case, the data store might accessthe user information to verify the identity of the user and can accessthe catalog detail information to obtain information about items of thattype. The information can then be returned to the user, such as in aresults listing on a Web page that the user is able to view via abrowser on the user device 902. Information for a particular item ofinterest can be viewed in a dedicated page or window of the browser.

Each server typically will include an operating system that providesexecutable program instructions for the general administration andoperation of that server and typically will include computer-readablemedium storing instructions that, when executed by a processor of theserver, allow the server to perform its intended functions. Suitableimplementations for the operating system and general functionality ofthe servers are known or commercially available and are readilyimplemented by persons having ordinary skill in the art, particularly inlight of the disclosure herein.

The environment in one embodiment is a distributed computing environmentutilizing several computer systems and components that areinterconnected via communication links, using one or more computernetworks or direct connections. However, it will be appreciated by thoseof ordinary skill in the art that such a system could operate equallywell in a system having fewer or a greater number of components than areillustrated in FIG. 9. Thus, the depiction of the system 900 in FIG. 9should be taken as being illustrative in nature and not limiting to thescope of the disclosure.

The various embodiments can be further implemented in a wide variety ofoperating environments, which in some cases can include one or more usercomputers or computing devices which can be used to operate any of anumber of applications. User or client devices can include any of anumber of general purpose personal computers, such as desktop or laptopcomputers running a standard operating system, as well as cellular,wireless and handheld devices running mobile software and capable ofsupporting a number of networking and messaging protocols. Such a systemcan also include a number of workstations running any of a variety ofcommercially-available operating systems and other known applicationsfor purposes such as development and database management. These devicescan also include other electronic devices, such as dummy terminals,thin-clients, gaming systems and other devices capable of communicatingvia a network.

Most embodiments utilize at least one network that would be familiar tothose skilled in the art for supporting communications using any of avariety of commercially-available protocols, such as TCP/IP, OSI, FTP,UPnP, NFS, CIFS and AppleTalk. The network can be, for example, a localarea network, a wide-area network, a virtual private network, theInternet, an intranet, an extranet, a public switched telephone network,an infrared network, a wireless network and any combination thereof.

In embodiments utilizing a Web server, the Web server can run any of avariety of server or mid-tier applications, including HTTP servers, FTPservers, CGI servers, data servers, Java servers and businessapplication servers. The server(s) may also be capable of executingprograms or scripts in response requests from user devices, such as byexecuting one or more Web applications that may be implemented as one ormore scripts or programs written in any programming language, such asJava®, C, C# or C++ or any scripting language, such as Perl, Python orTCL, as well as combinations thereof. The server(s) may also includedatabase servers, including without limitation those commerciallyavailable from Oracle®, Microsoft®, Sybase® and IBM®.

The environment can include a variety of data stores and other memoryand storage media as discussed above. These can reside in a variety oflocations, such as on a storage medium local to (and/or resident in) oneor more of the computers or remote from any or all of the computersacross the network. In a particular set of embodiments, the informationmay reside in a storage-area network (SAN) familiar to those skilled inthe art. Similarly, any necessary files for performing the functionsattributed to the computers, servers or other network devices may bestored locally and/or remotely, as appropriate. Where a system includescomputerized devices, each such device can include hardware elementsthat may be electrically coupled via a bus, the elements including, forexample, at least one central processing unit (CPU), at least one inputdevice (e.g., a mouse, keyboard, controller, touch-sensitive displayelement or keypad) and at least one output device (e.g., a displaydevice, printer or speaker). Such a system may also include one or morestorage devices, such as disk drives, optical storage devices andsolid-state storage devices such as random access memory (RAM) orread-only memory (ROM), as well as removable media devices, memorycards, flash cards, etc.

Such devices can also include a computer-readable storage media reader,a communications device (e.g., a modem, a network card (wireless orwired), an infrared communication device) and working memory asdescribed above. The computer-readable storage media reader can beconnected with, or configured to receive, a computer-readable storagemedium representing remote, local, fixed and/or removable storagedevices as well as storage media for temporarily and/or more permanentlycontaining, storing, transmitting and retrieving computer-readableinformation. The system and various devices also typically will includea number of software applications, modules, services or other elementslocated within at least one working memory device, including anoperating system and application programs such as a client applicationor Web browser. It should be appreciated that alternate embodiments mayhave numerous variations from that described above. For example,customized hardware might also be used and/or particular elements mightbe implemented in hardware, software (including portable software, suchas applets) or both. Further, connection to other computing devices suchas network input/output devices may be employed.

Storage media and computer readable media for containing code, orportions of code, can include any appropriate media known or used in theart, including storage media and communication media, such as but notlimited to volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage and/or transmissionof information such as computer readable instructions, data structures,program modules or other data, including RAM, ROM, EEPROM, flash memoryor other memory technology, CD-ROM, digital versatile disk (DVD) orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices or any other medium which canbe used to store the desired information and which can be accessed by asystem device. Based on the disclosure and teachings provided herein, aperson of ordinary skill in the art will appreciate other ways and/ormethods to implement the various embodiments.

The specification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense. It will, however, beevident that various modifications and changes may be made thereuntowithout departing from the broader spirit and scope of the invention asset forth in the claims.

What is claimed is:
 1. A computer-implemented method of selectingresources to perform gesture recognition on a computing device,comprising: under control of one or more computer systems configuredwith executable instructions, activating gesture detection on thecomputing device, the computing device including a plurality of camerasand at least one illumination element; determining a state of at leastone environmental condition pertaining to performance of the gesturedetection; selecting a minimum number of cameras of the plurality ofcameras and a minimum number of illumination elements to use to capturethe image information based at least in part on a type of the gesturedetection to be performed and the determined state of the at least oneenvironmental condition; capturing image information using the minimumnumber of cameras and the minimum number of illumination elements;analyzing the captured image information to attempt to recognize agesture performed by a user, adjusting at least one of the minimumnumber of cameras, the selection of cameras, a functional state of thecameras, or the minimum number of illumination elements used to capturesubsequent image information when no gesture is recognized from thecaptured image information for a determined period of time; determininga gesture from the captured subsequent image information, the gesturecorresponding to a type of input for the computing device; determiningthat the performance of the gesture detection has been sufficient todetect at least one gesture over a predetermined period of time;determining whether using a fewer number of cameras or a fewer number ofillumination elements would detect at least one gesture over thepredetermined period of time; and reducing, based at least in part ondetermining that using the fewer number of cameras or the fewer numberof illumination elements would detect at least one gesture, a currentnumber of cameras or a current number of illumination elements used toperform the gesture detection, the current number of cameras, after thereducing, including at least one camera used to perform the gesturedetection.
 2. The computer-implemented method of claim 1, furthercomprising: determining, after analyzing the captured image informationto attempt to recognize the gesture performed by the user, that nogesture is recognized.
 3. The computer-implemented method of claim 1,wherein selecting the minimum number of cameras further comprisesdetecting a right hand or left hand of the user visible by at least oneof the cameras.
 4. The computer-implemented method of claim 1, furthercomprising: determining the minimum number of illumination elementsbased at least in part on the type of the gesture recognition to beperformed and the state of the at least one environmental condition. 5.A computer-implemented method of selecting resources to perform a taskon a computing device, comprising: selecting, using the at least oneprocessor of the computing device, a number of components on thecomputing device to use to capture image information for a task to beperformed on the computing device, the number of components including acamera; attempting to perform the task using at least the imageinformation captured using the selected number of components; monitoringperformance of at least a portion of the task; adjusting, using the atleast one processor of the computing device, at least one of the numberof components or a selection of components used to capture imageinformation based at least in part on the monitored performance, whereinthe number of components are selected to utilize an amount of resourceson the computing device that is adjusted for current environmentalconditions and sufficient to enable the task to be performed to at leasta determined level of performance; determining that the task has beenperformed at the determined level of performance for at least apredetermined period of time; determining whether using a fewer numberof components would perform the task to the determined level ofperformance; and reducing, based at least in part on determining thatthe fewer number of components would perform the task, a current numberof components used to perform the task to the determined level ofperformance, the current number of components, after the reducing,including at least one camera used to perform the task.
 6. Thecomputer-implemented method of claim 5, wherein the number of componentson the computing device are further selected to analyze the capturedimage information.
 7. The computer-implemented method of claim 6,wherein the type of components includes at least one of a camera, anillumination source, an electronic gyroscope, an inertial sensor, anelectronic compass, a pressure sensor, a light sensor, a processor, oran algorithm.
 8. The computer-implemented method of claim 7, wherein thealgorithm includes at least one of a machine learning algorithm, an edgehistogram analysis algorithm, an optimization algorithm, or an adaptivecontrol algorithm.
 9. The computer-implemented method of claim 5,wherein the at least one environmental condition includes at least oneof an amount of ambient light, a confidence in a recognition algorithm,a distance to an object, an amount of motion, a confidence in a result,or an amount of remaining battery life.
 10. The computer-implementedmethod of claim 5, wherein adjusting at least one of the number ofcomponents or the type of components used to capture image informationincludes increasing the number of components or adjusting a functionalaspect of at least one of the components when the task is not performedto at least the determined level of performance.
 11. Thecomputer-implemented method of claim 5, wherein adjusting at least oneof the number or type of components used to capture image informationincludes decreasing the number of components or adjusting a functionalaspect of at least one of the components when the task is predicted tobe able to be performed to at least the determined level of performanceafter the adjusting.
 12. The computer-implemented method of claim 11,wherein the capability of at least one of the components includes atleast one of a resolution of a camera, a sensitivity of a sensor, or anintensity of an illumination element.
 13. The computer-implementedmethod of claim 5, wherein the type of task includes at least one ofgesture recognition, facial recognition, head tracking, gaze tracking,and object tracking.
 14. The computer-implemented method of claim 5,wherein at least the portion of the task includes at least one of imagecapture, pattern matching, gaze direction determination, head locationdetermination, object identification, facial identification, motiondetection, or gesture recognition.
 15. The computer-implemented methodof claim 5, wherein the selected number and type of components is basedat least in part upon historical performance data for a user of thecomputing device.
 16. The computer-implemented method of claim 5,further comprising: predicting a change in at least one of anenvironmental condition or a position of a user with respect to thecomputing device; and adjusting at least one of the number, the type, orthe state of at least one component on the computing device in responseto the predicted change.
 17. A computing device, comprising: a deviceprocessor; at least one camera; at least one light source; and a memorydevice including instructions operable to be executed by the processorto perform a set of actions, enabling the computing device to: select anumber of components on the computing device to use to capture the imageinformation for a task to be performed on the computing device, thenumber of components including the at least one camera; analyze thecaptured image information to attempt to complete at least a portion ofthe task; adjust at least one of the number of components or afunctional state of one of the components used to capture imageinformation when at least a portion of the task is unable to becompleted to a determined level of performance, wherein the number ofcomponents are selected to utilize an amount of resources on thecomputing device that is adjusted for current environmental conditions;determine that the task has been performed to the determined level ofperformance for at least a predetermined period of time; determinewhether using a fewer number of components would perform the task to thedetermined level of performance; and reduce, based at least in part ondetermining that using the fewer number of components would perform thetask, a current number of components used to perform the task to thedetermined level of performance, the current number of components, afterbeing reduced, including at least one camera used to perform the task.18. The computing device of claim 17, wherein the instructions whenexecuted further cause the computing device to: select a number ofcomponents on the computing device to use to analyze the captured imageinformation.
 19. The computing device of claim 17, wherein the number ofcomponents includes at least one of a camera, an illumination source, anelectronic gyroscope, an inertial sensor, an electronic compass, apressure sensor, a light sensor, a processor, or an algorithm.
 20. Thecomputing device of claim 17, wherein the instructions when executedfurther cause the computing device to: determine a hand of a uservisible to perform a gesture, the selected number of components on thecomputing device to use to capture the image information being based atleast in part upon the determined visible hand.
 21. A non-transitorycomputer-readable storage medium storing instructions that, whenexecuted by a processor, cause a computing device to: select a number ofcomponents on the computing device to use to capture image informationfor a task, the number of components including a camera; analyze thecaptured image information according to a type of the task to beperformed; adjust at least one of the number of components or afunctional state of one of the components used to capture or analyze theimage information when the task is unable to be performed to at least aminimum level of performance, wherein the number of components isselected to utilize an amount of resources on the computing device thatis adjusted for current environmental conditions; determine that thetask has been performed to the minimum level of performance for at leasta predetermined period of time; determine whether using a fewer numberof components would perform the task to the minimum level ofperformance; and reduce, based at least in part on determining that thefewer number of components would perform the task, a current number ofcomponents used to perform the task to the minimum level of performance,the current number of components, after being reduced, including atleast one camera used to perform the task.
 22. The non-transitorycomputer-readable storage medium of claim 21, wherein the instructionswhen executed further cause the computing device to: select at least onecomponent on the computing device to use to analyze the captured imageinformation.
 23. The non-transitory computer-readable storage medium ofclaim 21, wherein the task includes at least one of pattern matching,object identification, facial identification, motion detection, gazedirection determination, head location determination, or gesturerecognition.
 24. The non-transitory computer-readable storage medium ofclaim 21, wherein the instructions when executed further cause thecomputing device to: predict a change in at least one of anenvironmental condition or a position of a user; and adjust at least oneof the number of components or a functional state of at least onecomponent on the computing device in response to the predicted change.25. The non-transitory computer-readable storage medium of claim 21,wherein the instructions when executed further cause the computingdevice to: monitor a power level of a battery of the computing device;and adjust at least one of the number of components or a functionalstate of at least one component on the computing device when the powerlevel drops below a determined value.
 26. The computer-implementedmethod of claim 1, wherein the selection of the minimum number ofcameras is based at least in part upon a determination of a right orleft hand of the user holding the computing device.